new_element=document.createElement("script");
new_element.setAttribute("type","text/javascript");
new_element.setAttribute("src","../../common/userRole.js");
document.body.appendChild(new_element);
$(function() {
	init();
});
function init() {
	// 1.初始化Table
	var roleTable = new TableInit();
	roleTable.Init();
}

// 弹出新增角色页面
function add() {
	BootstrapDialog.show({
		title : '新增角色信息',
		draggable: true,
		closable: false,
		message : $("<form class='form-inline' style='height:400px'></form>")
				.load('roleAdd.html'),
		onshown : onLoadZTreeAdd,
		buttons : [ {
			icon : 'glyphicon glyphicon-check',
			label : '确定',
			cssClass : 'btn-primary',
			autospin : true,
			action : function(dialogRef) {
				var roleName = $("#roleName").val().trim();
				var roleContent = $("#roleContent").val().trim();
				var roleCode=$("input[name='roleCode']:checked").val();
				var moduleId = "";
				var treeObj = $.fn.zTree.getZTreeObj("treeAdd");
				if (treeObj) {
					var obj = treeObj.getCheckedNodes(true);
					for (var i = 0; i < obj.length; i++) {
						moduleId += obj[i].id + ","; // 如果选中，将value添加到变量s中
					}
				}
				addRole(roleName, roleContent, moduleId,roleCode);
			}
		}, {
			label : '取消',
			action : function(dialogRef) {
				dialogRef.close();
			}
		} ]
	});
}
// 发送新增角色信息
function addRole(roleName, roleContent, moduleId,roleCode) {
	if (roleName == "") {
		ok = false;
		var content = "角色名不能为空！";
		warning(content);
		return;
	}
	// 发送ajax请求
		$.ajax({
			url : "../../../role/addRole",
			type : "post",
			data : {
				"roleName" : roleName,
				"roleDescription" : roleContent,
				"roleCode":roleCode,
				"moduleId" : moduleId
			},
			dataType : "json",
			success : function(data) {
				if (data.flag == 0) {
					success(data.content);
					queryBytableId('roleTables');
				} else {
					warning(data.errorInfo);
				}
			},
			error : function() {
				warning("调用新增角色接口时出错");
			}
		});
}
// 编辑角色点击事件
function edit() {
	var roleCode = roleLoad();
	var selectRoles = $("#roleTables").bootstrapTable('getSelections');
	if (selectRoles.length == 0) {
		var content = "请选择要编辑的角色!";
		info(content);
	} else{
		if(roleCode=="0"){
			var roleID = selectRoles[0].roleID;
			var roleName = selectRoles[0].roleName;
			var roleDescription = selectRoles[0].roleDescription;
			editRoles(roleID,roleName,roleDescription);
		}else if(roleCode=="1"||roleCode=="2"){
			roleType=selectRoles[0].roleType;
			if(roleType=="1"){
				var content = "该角色为系统内置角色不能修改!";
				info(content);
			}else{
				var roleID = selectRoles[0].roleID;
				var roleName = selectRoles[0].roleName;
				var roleDescription = selectRoles[0].roleDescription;
				editRoles(roleID,roleName,roleDescription);
			}
		}
	}
}
//弹出编辑角色页面
function editRoles(roleID,roleName,roleDescription){
	BootstrapDialog.show({
		title : '编辑角色信息',
		draggable: true,
		closable: false,
		message : $(
				"<form class='form-inline' style='height:400px'></form>")
				.load('roleEdit.html'),
		onshown : function() {
			// 初始化编辑框的值
			var treeNodes;
			$("#roleEditName").val(roleName);
			$("#roleEditContent").val(roleDescription);
			$.ajax({
				async : false,// 是否异步
				cache : false,// 是否使用缓存
				type : 'POST',// 请求方式：post
				data : {
					 type:2,
					"roleID" : roleID
				},
				dataType : 'json',// 数据传输格式：json
				url : "../../../module/queryModuleTree",// 请求的action路径
				error : function() {
					warning("请求失败！");
				},
				success : function(data) {
					if(data.flag==0){
						treeNodes = data.content;// 把后台封装好的简单Json格式赋给treeNodes
						var t = $("#treeEdit");
						t = $.fn.zTree.init(t, setting, treeNodes);
					}else{
						warning(data.errorInfo);
					}
				}
			});
		},
		buttons : [ {
			icon : 'glyphicon glyphicon-check',
			label : '确定',
			cssClass : 'btn-primary',
			autospin : true,
			action : function(dialogRef) {
				var roleName = $("#roleEditName").val().trim();
				var roleContent = $("#roleEditContent").val().trim();
				var moduleId = "";
				var treeObj = $.fn.zTree.getZTreeObj("treeEdit");
				if (treeObj) {
					var obj = treeObj.getCheckedNodes(true);
					for (var i = 0; i < obj.length; i++) {
						moduleId += obj[i].id + ","; // 如果选中，将value添加到变量s中
					}
				}
				editRole(roleID, roleName, roleContent, moduleId);
			}
		}, {
			label : '取消',
			action : function(dialogRef) {
				dialogRef.close();
			}
		} ]
	});
}
// 发送编辑角色信息
function editRole(roleID, roleName, roleContent, moduleId) {
	if (roleName == "") {
		var content = "角色名称不能为空!";
		info(content);
		return;
	}
	// 发送ajax请求
		$.ajax({
			url : "../../../role/updateRole",
			type : "post",
			data : {
				"roleID" : roleID,
				"roleName" : roleName,
				"roleDescription" : roleContent,
				"moduleId" : moduleId
			},
			dataType : "json",
			success : function(data) {
				if (data.flag==0) {
					success(data.content);
					queryBytableId('roleTables');
				} else {
					danger(data.errorInfo);
				}
			},
			error : function() {
				danger("角色编辑失败!");
			}
		});
}

// 删除点击事件
function deleteRole() {
	var selectRoles = $("#roleTables").bootstrapTable('getSelections');
	var deleteAble = false;
	if (selectRoles.length == 0) {
		var content = "请选择要删除的角色信息!";
		danger(content);
	} else{
		var roleCode = roleLoad();//当前用户角色信息
		var deleteRoleCode=selectRoles[0].roleCode;
		var roleID = selectRoles[0].roleID;
		var content = "不能删除提示信息";
		if(roleCode=="0"){//超管删除
			if(deleteRoleCode=="0"){
				content = "该角色为最高权限角色不能删除!";
			}else{
				deleteAble=true;
			}
		}else if(roleCode=="1"){//管理员删除
			var roleType=selectRoles[0].roleType;
			if(roleType=="1"){
				content = "该角色为系统内置角色不能删除!";
			}else{
				if(deleteRoleCode=="0"||deleteRoleCode=="1"){
					content = "您无权限删除此角色信息，请联系管理员!";
				}else{
					deleteAble=true;
				}
			}
		}else{
			 content = "您无删除角色权限，请联系管理员!";
		}
		if(deleteAble){
			//检查角色关联人员个数
			$.ajax({
				url : "../../../role/queryUserNumByRoleId",
				type : "post",
				data : {
					"roleID" : roleID
				},
				dataType : "json",
				success : function(data) {
					if (data.flag == 0) {
						var num = data.content;
						var tips ="您确定要删除吗?";
						if(num>0){
							tips = "当前角色关联有"+num+"个用户，您确定要删除吗？";
						}
						deleteRoleIds(roleID,tips);
					}
				}
			});
		}else{
			info(content);
		}
	}
}
//删除提示确认框
function deleteRoleIds(roleID,tipInfo){
	BootstrapDialog.show({
		title : '提示',
		message :tipInfo,
		buttons : [{
			icon : 'glyphicon glyphicon-check',
			label : '确定',
			cssClass : 'btn-primary',
			autospin : true,
			action:function(dialogRef){
				dialogRef.close();
				 deleteRoleID(roleID);
			}
		},{
			label : '取消',
			action : function(dialogRef) {
				dialogRef.close();
			}
		}]
	});
}
// 删除角色具体ajax操作
function deleteRoleID(roleID) {
	$.ajax({
		url : "../../../role/deleteRole",
		type : "post",
		data : {
			"roleID" : roleID
		},
		dataType : "json",
		success : function(data) {
			if (data.flag==0) {
				success(data.content);
				queryBytableId('roleTables');
			} else {
				danger(data.errorInfo);
			}
		},
		error : function() {
			danger("角色删除失败!");
		}
	});
}
// 树形结构展示功能模块
var zTree;
var setting = {
	view : {
		dblClickExpand : true,// 双击节点时，是否自动展开父节点的标识
		showLine : true,// 是否显示节点之间的连线
		fontCss : {
			'color' : 'black',
			'font-weight' : 'bold'
		},// 字体样式函数
		selectedMulti : true
	// 设置是否允许同时选中多个节点
	},
	check : {
		enable : true,// 每个节点上是否显示 CheckBox
		checkbox:{ "Y": "ps", "N": "ps" },
		autoCheckTrigger: true,
		chkStyle: "checkbox"
	},
	data : {
		simpleData : {// 简单数据模式
			enable : true
		}
	},
	callback : {
		beforeClick : function(treeId, treeNode) {
			zTree = $.fn.zTree.getZTreeObj("tree");
			if (treeNode.isParent) {
				zTree.expandNode(treeNode);// 如果是父节点，则展开该节点
			} else {
				zTree.checkNode(treeNode, !treeNode.checked, true, true);// 单击勾选，再次单击取消勾选
			}
		}
	}
};
// 新增加载树
function onLoadZTreeAdd() {
	if(roleLoad()=="0"){
		$("#jsxtglyjs").show();
	}
	var treeNodes;
	$.ajax({
		async : false,// 是否异步
		cache : false,// 是否使用缓存
		type : 'POST',// 请求方式：post
		data:{type:1},
		dataType : 'json',// 数据传输格式：json
		url : "../../../module/queryModuleTree",// 请求的action路径
		error : function() {
			// 请求失败处理函数
			warning("请求失败！");
		},
		success : function(data) {
			if(data.flag==0){
				treeNodes = data.content;// 把后台封装好的简单Json格式赋给treeNodes
				var t = $("#treeAdd");
				t = $.fn.zTree.init(t, setting, treeNodes);
			}else{
				warning(data.errorInfo);
			}
		}
	});
}

var TableInit = function() {
	var oTableInit = new Object();
	// 初始化Table
	oTableInit.Init = function() {
		$('#roleTables').bootstrapTable({
			url : '../../../role/getRoleList', // 请求后台的URL（*）
			method : "POST",
			contentType : "application/x-www-form-urlencoded",
			toolbar : '#toolbar',
			striped : true, // 是否显示行间隔色
			cache : false, // 是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
			pagination : true, // 是否显示分页（*）
			sortable : true, // 是否启用排序
			checkboxHeader : false,// 是否显示表头的全选
			queryParamsType : "undefined", // 默认limit
			queryParams : oTableInit.queryParams,// 传递参数（*）
			sidePagination : "server", // 分页方式：client客户端分页，server服务端分页（*）
			pageNumber : 1, // 初始化加载第一页，默认第一页
			pageSize : 10, // 每页的记录行数（*）
			pageList : [ 10, 25, 50, 100 ], // 可供选择的每页的行数（*）
			sortName : "ROLE_NAME",
			sortOrder : "DESC",
			search : false, // 是否显示表格搜索，此搜索是客户端搜索，不会进服务端，所以，个人感觉意义不大
			strictSearch : true,
			showColumns : true, // 是否显示所有的列
			minimumCountColumns : 2, // 最少允许的列数
			clickToSelect : true, // 是否启用点击选中行
			height: 500, // 行高，如果没有设置height属性，表格自动根据记录条数觉得表格高度
			uniqueId : "roleID", // 每一行的唯一标识，一般为主键列
			showToggle : true, // 是否显示详细视图和列表视图的切换按钮
			cardView : false, // 是否显示详细视图
			detailView : false,
			singleSelect:true,
			onLoadSuccess:function(){
	            $('.bootstrap-table tr td').each(function () {
	                $(this).attr("title", $(this).text());
	                $(this).css("cursor", 'pointer');
	            });
	        },
			responseHandler : function(res) {
				return getTableData(res);
			}, // 是否显示父子表
			columns : [ {
				checkbox : true
			},{
				field : 'roleType',
				visible:false
			},{
				field : 'roleCode',
				visible:false
			},{
				field : 'roleID',
				title : '角色ID',
				visible:false
			}, {
				field : 'roleName',
				title : '角色名称',
				sortable : true,// 是否可排序
				order : "DESC"// 默认排序方式
			},{
				field : 'roleDescription',
				title : '角色描述',
				width: 350,
				cellStyle:{ 
					css:{ 
					"overflow": "hidden", 
					"text-overflow": "ellipsis", 
					"white-space": "nowrap" 
					} 
				}
			},{
				field : 'startTime',
				title : '创建时间'
			}, {
				field : 'updateTime',
				title : '修改时间'
			} ]
		});
	};
	// 得到查询的参数
	oTableInit.queryParams = function(params) {
		var temp = { // 这里的键的名字和控制器的变量名必须一直，这边改动，控制器也需要改成一样的pageSize,
			// pageNumber, searchText, sortName, sortOrder
			pageSize : params.pageSize, // 页面大小
			pageNumber : params.pageNumber, // 页码
			sortName : "ROLE_NAME",
			sortOrder : params.sortOrder,
			roleName : $('#roleNameSearch').val()
		};
		return temp;
	};
	return oTableInit;
};